package leetcode_500;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;

import helpclass.Node;

/**
 *@author 周杨 
 *NaryTreeLevelOrderTraversal_429 N叉树的层次遍历
 *describe:用队列 AC 32%
 *2018年8月14日 下午3:52:09
 */
public class NaryTreeLevelOrderTraversal_429 {
	  public List<List<Integer>> levelOrder(Node root) {
		  List<List<Integer>> res=new ArrayList<List<Integer>>();
		  if(root==null)
			  return res;
		  LinkedList<Node> queue=new LinkedList<Node>();
		  queue.add(root);
		  while(!queue.isEmpty()) {//如果栈不为空 表明此层仍然有节点
			  int size=queue.size();
			  List<Integer> temp=new ArrayList<Integer>();
			  while(size>0) {//仅遍历此层
				  Node now=queue.poll();
				  temp.add(now.val);
				  List<Node> list=now.children;
				  for(Node node:list)
					  queue.add(node);
				  --size;
			  }
			  res.add(temp);
		  }
		  return res;
	  }
}
